<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>FLITr: examples/glsl_shader_pass/render_to_video.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">FLITr
   &#160;<span id="projectnumber">1.x</span>
   </div>
   <div id="projectbrief">Framework for Live Image Transformation.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('render__to__video_8h_source.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="headertitle">
<div class="title">render_to_video.h</div>  </div>
</div><!--header-->
<div class="contents">
<a href="render__to__video_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="preprocessor">#ifndef RENDER_TO_VIDEO_H</span></div>
<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define RENDER_TO_VIDEO_H</span></div>
<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="preprocessor">#include &lt;osg/Camera&gt;</span></div>
<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="preprocessor">#include &lt;<a class="code" href="ffmpeg__writer_8h.html">flitr/ffmpeg_writer.h</a>&gt;</span></div>
<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;</div>
<div class="line"><a name="l00007"></a><span class="lineno"><a class="code" href="class_render_to_video.html">    7</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_render_to_video.html">RenderToVideo</a> {</div>
<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;    </div>
<div class="line"><a name="l00009"></a><span class="lineno"><a class="code" href="struct_render_to_video_1_1_save_camera_post_draw_callback.html">    9</a></span>&#160;    <span class="keyword">struct </span><a class="code" href="struct_render_to_video_1_1_save_camera_post_draw_callback.html">SaveCameraPostDrawCallback</a> : <span class="keyword">public</span> osg::Camera::DrawCallback</div>
<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;    {</div>
<div class="line"><a name="l00011"></a><span class="lineno"><a class="code" href="struct_render_to_video_1_1_save_camera_post_draw_callback.html#a523f40ac0cffa9731688d72e36032dc6">   11</a></span>&#160;        <a class="code" href="struct_render_to_video_1_1_save_camera_post_draw_callback.html#a523f40ac0cffa9731688d72e36032dc6">SaveCameraPostDrawCallback</a>(osg::Image* image, <a class="code" href="classflitr_1_1_f_fmpeg_writer.html">flitr::FFmpegWriter</a>* ffw) :</div>
<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;            <a class="code" href="struct_render_to_video_1_1_save_camera_post_draw_callback.html#ad0271cf34dae0720c9fc000e9d78bcb8">Image_</a>(image),</div>
<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;            <a class="code" href="struct_render_to_video_1_1_save_camera_post_draw_callback.html#a1bbe8c3c231db283aa10b8d0f04f2290">FFW_</a>(ffw)</div>
<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;        {</div>
<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;        }</div>
<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;        </div>
<div class="line"><a name="l00017"></a><span class="lineno"><a class="code" href="struct_render_to_video_1_1_save_camera_post_draw_callback.html#a2f7420fd8245911dc8c7fc8d924445cf">   17</a></span>&#160;        <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="struct_render_to_video_1_1_save_camera_post_draw_callback.html#a2f7420fd8245911dc8c7fc8d924445cf">operator () </a>(<span class="keyword">const</span> osg::Camera&amp; <span class="comment">/*camera*/</span>)<span class="keyword"> const</span></div>
<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="keyword">        </span>{</div>
<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;            <a class="code" href="struct_render_to_video_1_1_save_camera_post_draw_callback.html#a1bbe8c3c231db283aa10b8d0f04f2290">FFW_</a>-&gt;<a class="code" href="classflitr_1_1_f_fmpeg_writer.html#a49b9bad2025d723d5ed3a03e990e000c">writeVideoFrame</a>(<a class="code" href="struct_render_to_video_1_1_save_camera_post_draw_callback.html#ad0271cf34dae0720c9fc000e9d78bcb8">Image_</a>-&gt;data());</div>
<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;        }</div>
<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;    </div>
<div class="line"><a name="l00022"></a><span class="lineno"><a class="code" href="struct_render_to_video_1_1_save_camera_post_draw_callback.html#ad0271cf34dae0720c9fc000e9d78bcb8">   22</a></span>&#160;        osg::Image* <a class="code" href="struct_render_to_video_1_1_save_camera_post_draw_callback.html#ad0271cf34dae0720c9fc000e9d78bcb8">Image_</a>;</div>
<div class="line"><a name="l00023"></a><span class="lineno"><a class="code" href="struct_render_to_video_1_1_save_camera_post_draw_callback.html#a1bbe8c3c231db283aa10b8d0f04f2290">   23</a></span>&#160;        <a class="code" href="classflitr_1_1_f_fmpeg_writer.html">flitr::FFmpegWriter</a>* <a class="code" href="struct_render_to_video_1_1_save_camera_post_draw_callback.html#a1bbe8c3c231db283aa10b8d0f04f2290">FFW_</a>;</div>
<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;    };</div>
<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div>
<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;  <span class="keyword">public</span>:</div>
<div class="line"><a name="l00027"></a><span class="lineno"><a class="code" href="class_render_to_video.html#af9d50b827b5ddd1edf79edb410b6a1c9">   27</a></span>&#160;    <a class="code" href="class_render_to_video.html#af9d50b827b5ddd1edf79edb410b6a1c9">RenderToVideo</a>(<a class="code" href="namespaceflitr.html#a85e0d540b914515bbca44f1a63eeb63c">osg::TextureRectangle</a>* tex, std::string filename)</div>
<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;    {</div>
<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;        <a class="code" href="class_render_to_video.html#af0808ee662ebdb618850a5e2b2b59301">init</a>(tex, <span class="keyword">false</span>, filename);</div>
<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;    }</div>
<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;</div>
<div class="line"><a name="l00032"></a><span class="lineno"><a class="code" href="class_render_to_video.html#add731837663756bfcbb31863b61c979c">   32</a></span>&#160;    <a class="code" href="class_render_to_video.html#af9d50b827b5ddd1edf79edb410b6a1c9">RenderToVideo</a>(osg::Texture2D* tex, std::string filename)</div>
<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    {</div>
<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;        <a class="code" href="class_render_to_video.html#af0808ee662ebdb618850a5e2b2b59301">init</a>(tex, <span class="keyword">true</span>, filename);</div>
<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;    }</div>
<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div>
<div class="line"><a name="l00037"></a><span class="lineno"><a class="code" href="class_render_to_video.html#aaa7165af1cf59e66af6c6da09a8b24f7">   37</a></span>&#160;    <a class="code" href="class_render_to_video.html#aaa7165af1cf59e66af6c6da09a8b24f7">~RenderToVideo</a>() {}</div>
<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div>
<div class="line"><a name="l00039"></a><span class="lineno"><a class="code" href="class_render_to_video.html#af0808ee662ebdb618850a5e2b2b59301">   39</a></span>&#160;    <span class="keywordtype">void</span> <a class="code" href="class_render_to_video.html#af0808ee662ebdb618850a5e2b2b59301">init</a>(osg::Texture* tex, <span class="keywordtype">bool</span> is2D, std::string filename)</div>
<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;    {</div>
<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;        <a class="code" href="class_render_to_video.html#abe9815289dff465c0c4c7ac06e10a462">TotalWidth_</a> = tex-&gt;getTextureWidth();</div>
<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;        <a class="code" href="class_render_to_video.html#a126eb7c9c54cd3d1cf48e9e314afd49e">TotalHeight_</a> = tex-&gt;getTextureHeight();</div>
<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;        <a class="code" href="class_render_to_video.html#ac0e2dbf134a3114b79dd24588ae5a10a">OutputFormat_</a> = <a class="code" href="classflitr_1_1_image_format.html">flitr::ImageFormat</a>(<a class="code" href="class_render_to_video.html#abe9815289dff465c0c4c7ac06e10a462">TotalWidth_</a>, <a class="code" href="class_render_to_video.html#a126eb7c9c54cd3d1cf48e9e314afd49e">TotalHeight_</a>, <a class="code" href="classflitr_1_1_image_format.html#a2bab1cfeef716117996a75550577efdca1a3c7ec40db7c9fe872a1fe534bc99fc">flitr::ImageFormat::FLITR_PIX_FMT_RGB_8</a>);</div>
<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div>
<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;        <a class="code" href="class_render_to_video.html#ac1832cc96775e21827e0b532a048fa6f">FFW_</a> = std::tr1::shared_ptr&lt;flitr::FFmpegWriter&gt;(<span class="keyword">new</span> <a class="code" href="classflitr_1_1_f_fmpeg_writer.html">flitr::FFmpegWriter</a>(filename, <a class="code" href="class_render_to_video.html#ac0e2dbf134a3114b79dd24588ae5a10a">OutputFormat_</a>));</div>
<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;        <a class="code" href="class_render_to_video.html#ac97f524508efd3bac854df8fad2a3a47">RootGroup_</a> = <span class="keyword">new</span> osg::Group;</div>
<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;        osg::ref_ptr&lt;osg::Group&gt; geode_group = <span class="keyword">new</span> osg::Group;</div>
<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;        </div>
<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;        <span class="comment">// create quad to display image on</span></div>
<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;        osg::ref_ptr&lt;osg::Geode&gt; geode = <span class="keyword">new</span> osg::Geode();</div>
<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;        </div>
<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;        <span class="comment">// each geom will contain a quad</span></div>
<div class="line"><a name="l00054"></a><span class="lineno">   54</span>&#160;        osg::ref_ptr&lt;osg::DrawArrays&gt; da = <span class="keyword">new</span> osg::DrawArrays(osg::PrimitiveSet::QUADS,0,4);</div>
<div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;        </div>
<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;        osg::ref_ptr&lt;osg::Vec4Array&gt; colors = <span class="keyword">new</span> osg::Vec4Array;</div>
<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;        colors-&gt;push_back(osg::Vec4(1.0f,1.0f,1.0f,1.0f));</div>
<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;        </div>
<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;        osg::ref_ptr&lt;osg::Vec2Array&gt; tcoords = <span class="keyword">new</span> osg::Vec2Array; <span class="comment">// texture coords</span></div>
<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;        <span class="keywordflow">if</span> (is2D) {</div>
<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;            tcoords-&gt;push_back(osg::Vec2(0, 1));</div>
<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;            tcoords-&gt;push_back(osg::Vec2(1, 1));</div>
<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;            tcoords-&gt;push_back(osg::Vec2(1, 0));</div>
<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;            tcoords-&gt;push_back(osg::Vec2(0, 0));</div>
<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;        } <span class="keywordflow">else</span> {</div>
<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;            tcoords-&gt;push_back(osg::Vec2(0, <a class="code" href="class_render_to_video.html#a126eb7c9c54cd3d1cf48e9e314afd49e">TotalHeight_</a>));</div>
<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;            tcoords-&gt;push_back(osg::Vec2(<a class="code" href="class_render_to_video.html#abe9815289dff465c0c4c7ac06e10a462">TotalWidth_</a>, <a class="code" href="class_render_to_video.html#a126eb7c9c54cd3d1cf48e9e314afd49e">TotalHeight_</a>));</div>
<div class="line"><a name="l00068"></a><span class="lineno">   68</span>&#160;            tcoords-&gt;push_back(osg::Vec2(<a class="code" href="class_render_to_video.html#abe9815289dff465c0c4c7ac06e10a462">TotalWidth_</a>, 0));</div>
<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;            tcoords-&gt;push_back(osg::Vec2(0, 0));</div>
<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;        }</div>
<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div>
<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;        osg::ref_ptr&lt;osg::Vec3Array&gt; vcoords = <span class="keyword">new</span> osg::Vec3Array; <span class="comment">// vertex coords</span></div>
<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;        osg::ref_ptr&lt;osg::Geometry&gt; geom = <span class="keyword">new</span> osg::Geometry;</div>
<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;        </div>
<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;        vcoords-&gt;push_back(osg::Vec3d(0, 0, -1));</div>
<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;        vcoords-&gt;push_back(osg::Vec3d(<a class="code" href="class_render_to_video.html#abe9815289dff465c0c4c7ac06e10a462">TotalWidth_</a>, 0, -1));</div>
<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;        vcoords-&gt;push_back(osg::Vec3d(<a class="code" href="class_render_to_video.html#abe9815289dff465c0c4c7ac06e10a462">TotalWidth_</a>, <a class="code" href="class_render_to_video.html#a126eb7c9c54cd3d1cf48e9e314afd49e">TotalHeight_</a>, -1));</div>
<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;        vcoords-&gt;push_back(osg::Vec3d(0, <a class="code" href="class_render_to_video.html#a126eb7c9c54cd3d1cf48e9e314afd49e">TotalHeight_</a>, -1));</div>
<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;    </div>
<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;        geom-&gt;setVertexArray(vcoords.get());</div>
<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;        geom-&gt;setTexCoordArray(0, tcoords.get());</div>
<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;        geom-&gt;addPrimitiveSet(da.get());</div>
<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;        geom-&gt;setColorArray(colors.get());</div>
<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;        geom-&gt;setColorBinding(osg::Geometry::BIND_OVERALL);</div>
<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;        osg::ref_ptr&lt;osg::StateSet&gt; geomss = geom-&gt;getOrCreateStateSet();</div>
<div class="line"><a name="l00086"></a><span class="lineno">   86</span>&#160;        geomss-&gt;setMode(GL_LIGHTING, osg::StateAttribute::OFF);</div>
<div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;        geomss-&gt;setMode(GL_DEPTH_TEST, osg::StateAttribute::OFF);</div>
<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;        geomss-&gt;setTextureAttributeAndModes(0, </div>
<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;                                            tex,</div>
<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;                                            osg::StateAttribute::ON);</div>
<div class="line"><a name="l00091"></a><span class="lineno">   91</span>&#160;        geode-&gt;addDrawable(geom.get());</div>
<div class="line"><a name="l00092"></a><span class="lineno">   92</span>&#160;        geode_group-&gt;addChild(geode.get());</div>
<div class="line"><a name="l00093"></a><span class="lineno">   93</span>&#160;</div>
<div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;        <a class="code" href="class_render_to_video.html#ac69c2489da537d9d10f2b2d5e222144b">OutputImage_</a> = <span class="keyword">new</span> osg::Image;</div>
<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;        <a class="code" href="class_render_to_video.html#ac69c2489da537d9d10f2b2d5e222144b">OutputImage_</a>-&gt;allocateImage(<a class="code" href="class_render_to_video.html#abe9815289dff465c0c4c7ac06e10a462">TotalWidth_</a>, <a class="code" href="class_render_to_video.html#a126eb7c9c54cd3d1cf48e9e314afd49e">TotalHeight_</a>, 1, GL_RGB, GL_UNSIGNED_BYTE);</div>
<div class="line"><a name="l00096"></a><span class="lineno">   96</span>&#160;        <a class="code" href="class_render_to_video.html#ac69c2489da537d9d10f2b2d5e222144b">OutputImage_</a>-&gt;setPixelFormat(GL_RGB);</div>
<div class="line"><a name="l00097"></a><span class="lineno">   97</span>&#160;        <a class="code" href="class_render_to_video.html#ac69c2489da537d9d10f2b2d5e222144b">OutputImage_</a>-&gt;setDataType(GL_UNSIGNED_BYTE);</div>
<div class="line"><a name="l00098"></a><span class="lineno">   98</span>&#160;</div>
<div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;        <a class="code" href="class_render_to_video.html#ab5ab401342642555da500633a7971458">OutputTexture_</a> = <span class="keyword">new</span> <a class="code" href="namespaceflitr.html#a85e0d540b914515bbca44f1a63eeb63c">osg::TextureRectangle</a>;   </div>
<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;        <a class="code" href="class_render_to_video.html#ab5ab401342642555da500633a7971458">OutputTexture_</a>-&gt;setTextureSize(<a class="code" href="class_render_to_video.html#abe9815289dff465c0c4c7ac06e10a462">TotalWidth_</a>, <a class="code" href="class_render_to_video.html#a126eb7c9c54cd3d1cf48e9e314afd49e">TotalHeight_</a>);</div>
<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;        <a class="code" href="class_render_to_video.html#ab5ab401342642555da500633a7971458">OutputTexture_</a>-&gt;setInternalFormat(GL_RGB);</div>
<div class="line"><a name="l00102"></a><span class="lineno">  102</span>&#160;        <span class="comment">//OutputTexture_-&gt;setSourceFormat(GL_LUMINANCE);</span></div>
<div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;        <a class="code" href="class_render_to_video.html#ab5ab401342642555da500633a7971458">OutputTexture_</a>-&gt;setSourceType(GL_UNSIGNED_BYTE);</div>
<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;        <a class="code" href="class_render_to_video.html#ab5ab401342642555da500633a7971458">OutputTexture_</a>-&gt;setFilter(osg::Texture2D::MIN_FILTER,osg::Texture2D::LINEAR);</div>
<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;        <a class="code" href="class_render_to_video.html#ab5ab401342642555da500633a7971458">OutputTexture_</a>-&gt;setFilter(osg::Texture2D::MAG_FILTER,osg::Texture2D::LINEAR);</div>
<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;        <a class="code" href="class_render_to_video.html#ab5ab401342642555da500633a7971458">OutputTexture_</a>-&gt;setImage(0,<a class="code" href="class_render_to_video.html#ac69c2489da537d9d10f2b2d5e222144b">OutputImage_</a>.get());</div>
<div class="line"><a name="l00107"></a><span class="lineno">  107</span>&#160;</div>
<div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;        <a class="code" href="class_render_to_video.html#aefbc9c1abac093b17c7a99aed1c122d7">Camera_</a> = <span class="keyword">new</span> osg::Camera;</div>
<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;        <a class="code" href="class_render_to_video.html#aefbc9c1abac093b17c7a99aed1c122d7">Camera_</a>-&gt;setClearColor(osg::Vec4(0.1f,0.1f,0.3f,1.0f));</div>
<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;        <a class="code" href="class_render_to_video.html#aefbc9c1abac093b17c7a99aed1c122d7">Camera_</a>-&gt;setClearMask(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);</div>
<div class="line"><a name="l00111"></a><span class="lineno">  111</span>&#160;</div>
<div class="line"><a name="l00112"></a><span class="lineno">  112</span>&#160;        <a class="code" href="class_render_to_video.html#aefbc9c1abac093b17c7a99aed1c122d7">Camera_</a>-&gt;setProjectionMatrixAsOrtho(0,<a class="code" href="class_render_to_video.html#abe9815289dff465c0c4c7ac06e10a462">TotalWidth_</a>,0,<a class="code" href="class_render_to_video.html#a126eb7c9c54cd3d1cf48e9e314afd49e">TotalHeight_</a>,-100,100);</div>
<div class="line"><a name="l00113"></a><span class="lineno">  113</span>&#160;        <a class="code" href="class_render_to_video.html#aefbc9c1abac093b17c7a99aed1c122d7">Camera_</a>-&gt;setComputeNearFarMode(osg::CullSettings::DO_NOT_COMPUTE_NEAR_FAR);</div>
<div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;        <a class="code" href="class_render_to_video.html#aefbc9c1abac093b17c7a99aed1c122d7">Camera_</a>-&gt;setReferenceFrame(osg::Transform::ABSOLUTE_RF);</div>
<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;        <a class="code" href="class_render_to_video.html#aefbc9c1abac093b17c7a99aed1c122d7">Camera_</a>-&gt;setViewMatrix(osg::Matrix::identity());</div>
<div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;        <a class="code" href="class_render_to_video.html#aefbc9c1abac093b17c7a99aed1c122d7">Camera_</a>-&gt;setViewport(0, 0, <a class="code" href="class_render_to_video.html#abe9815289dff465c0c4c7ac06e10a462">TotalWidth_</a>, <a class="code" href="class_render_to_video.html#a126eb7c9c54cd3d1cf48e9e314afd49e">TotalHeight_</a>);</div>
<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;</div>
<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;        <a class="code" href="class_render_to_video.html#aefbc9c1abac093b17c7a99aed1c122d7">Camera_</a>-&gt;setRenderOrder(osg::Camera::PRE_RENDER);</div>
<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;        <a class="code" href="class_render_to_video.html#aefbc9c1abac093b17c7a99aed1c122d7">Camera_</a>-&gt;setRenderTargetImplementation(osg::Camera::FRAME_BUFFER_OBJECT);</div>
<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;</div>
<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;        <a class="code" href="class_render_to_video.html#aefbc9c1abac093b17c7a99aed1c122d7">Camera_</a>-&gt;attach(osg::Camera::BufferComponent(osg::Camera::COLOR_BUFFER),</div>
<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;                        <a class="code" href="class_render_to_video.html#ac69c2489da537d9d10f2b2d5e222144b">OutputImage_</a>);</div>
<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div>
<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;        <a class="code" href="class_render_to_video.html#aefbc9c1abac093b17c7a99aed1c122d7">Camera_</a>-&gt;addChild(geode_group.get());</div>
<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;</div>
<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;        <a class="code" href="class_render_to_video.html#aefbc9c1abac093b17c7a99aed1c122d7">Camera_</a>-&gt;setPostDrawCallback(<span class="keyword">new</span> <a class="code" href="struct_render_to_video_1_1_save_camera_post_draw_callback.html">SaveCameraPostDrawCallback</a>(<a class="code" href="class_render_to_video.html#ac69c2489da537d9d10f2b2d5e222144b">OutputImage_</a>.get(), <a class="code" href="class_render_to_video.html#ac1832cc96775e21827e0b532a048fa6f">FFW_</a>.get()));</div>
<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;</div>
<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;        RootGroup_-&gt;addChild(<a class="code" href="class_render_to_video.html#aefbc9c1abac093b17c7a99aed1c122d7">Camera_</a>.get());</div>
<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;    }</div>
<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div>
<div class="line"><a name="l00131"></a><span class="lineno"><a class="code" href="class_render_to_video.html#a68274ea621b83dfae18733d3879e93a9">  131</a></span>&#160;    osg::ref_ptr&lt;osg::Group&gt; <a class="code" href="class_render_to_video.html#a68274ea621b83dfae18733d3879e93a9">getRoot</a>() { <span class="keywordflow">return</span> <a class="code" href="class_render_to_video.html#ac97f524508efd3bac854df8fad2a3a47">RootGroup_</a>; }</div>
<div class="line"><a name="l00132"></a><span class="lineno"><a class="code" href="class_render_to_video.html#a54ee401e9d3f064e65477ac60b72c57a">  132</a></span>&#160;    osg::ref_ptr&lt;osg::TextureRectangle&gt; <a class="code" href="class_render_to_video.html#a54ee401e9d3f064e65477ac60b72c57a">getOutputTexture</a>() { <span class="keywordflow">return</span> <a class="code" href="class_render_to_video.html#ab5ab401342642555da500633a7971458">OutputTexture_</a>; }</div>
<div class="line"><a name="l00133"></a><span class="lineno"><a class="code" href="class_render_to_video.html#a5e9bbab792f89d5a1bc9a28b2b68f7b3">  133</a></span>&#160;    uint8_t* <a class="code" href="class_render_to_video.html#a5e9bbab792f89d5a1bc9a28b2b68f7b3">getDataPtr</a>() { <span class="keywordflow">return</span> <a class="code" href="class_render_to_video.html#ac69c2489da537d9d10f2b2d5e222144b">OutputImage_</a>-&gt;data(); }</div>
<div class="line"><a name="l00134"></a><span class="lineno"><a class="code" href="class_render_to_video.html#a546da3d4c116d2949b12460ba58acfed">  134</a></span>&#160;    <a class="code" href="classflitr_1_1_image_format.html">flitr::ImageFormat</a> <a class="code" href="class_render_to_video.html#a546da3d4c116d2949b12460ba58acfed">getOutputFormat</a>() { <span class="keywordflow">return</span> <a class="code" href="class_render_to_video.html#ac0e2dbf134a3114b79dd24588ae5a10a">OutputFormat_</a>; }</div>
<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;        </div>
<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;  <span class="keyword">private</span>:</div>
<div class="line"><a name="l00137"></a><span class="lineno"><a class="code" href="class_render_to_video.html#ac97f524508efd3bac854df8fad2a3a47">  137</a></span>&#160;    osg::ref_ptr&lt;osg::Group&gt; <a class="code" href="class_render_to_video.html#ac97f524508efd3bac854df8fad2a3a47">RootGroup_</a>;</div>
<div class="line"><a name="l00138"></a><span class="lineno"><a class="code" href="class_render_to_video.html#aefbc9c1abac093b17c7a99aed1c122d7">  138</a></span>&#160;    osg::ref_ptr&lt;osg::Camera&gt; <a class="code" href="class_render_to_video.html#aefbc9c1abac093b17c7a99aed1c122d7">Camera_</a>;</div>
<div class="line"><a name="l00139"></a><span class="lineno"><a class="code" href="class_render_to_video.html#ab5ab401342642555da500633a7971458">  139</a></span>&#160;    osg::ref_ptr&lt;osg::TextureRectangle&gt; <a class="code" href="class_render_to_video.html#ab5ab401342642555da500633a7971458">OutputTexture_</a>;</div>
<div class="line"><a name="l00140"></a><span class="lineno"><a class="code" href="class_render_to_video.html#ac69c2489da537d9d10f2b2d5e222144b">  140</a></span>&#160;    osg::ref_ptr&lt;osg::Image&gt; <a class="code" href="class_render_to_video.html#ac69c2489da537d9d10f2b2d5e222144b">OutputImage_</a>;</div>
<div class="line"><a name="l00141"></a><span class="lineno"><a class="code" href="class_render_to_video.html#abe9815289dff465c0c4c7ac06e10a462">  141</a></span>&#160;        <span class="keywordtype">int</span> <a class="code" href="class_render_to_video.html#abe9815289dff465c0c4c7ac06e10a462">TotalWidth_</a>;</div>
<div class="line"><a name="l00142"></a><span class="lineno"><a class="code" href="class_render_to_video.html#a126eb7c9c54cd3d1cf48e9e314afd49e">  142</a></span>&#160;        <span class="keywordtype">int</span> <a class="code" href="class_render_to_video.html#a126eb7c9c54cd3d1cf48e9e314afd49e">TotalHeight_</a>;</div>
<div class="line"><a name="l00143"></a><span class="lineno"><a class="code" href="class_render_to_video.html#ac0e2dbf134a3114b79dd24588ae5a10a">  143</a></span>&#160;    <a class="code" href="classflitr_1_1_image_format.html">flitr::ImageFormat</a> <a class="code" href="class_render_to_video.html#ac0e2dbf134a3114b79dd24588ae5a10a">OutputFormat_</a>;</div>
<div class="line"><a name="l00144"></a><span class="lineno"><a class="code" href="class_render_to_video.html#ac1832cc96775e21827e0b532a048fa6f">  144</a></span>&#160;    std::tr1::shared_ptr&lt;flitr::FFmpegWriter&gt; <a class="code" href="class_render_to_video.html#ac1832cc96775e21827e0b532a048fa6f">FFW_</a>;</div>
<div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;};</div>
<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div>
<div class="line"><a name="l00147"></a><span class="lineno">  147</span>&#160;<span class="preprocessor">#endif // RENDER_TO_VIDEO_H</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_cf9c97c292ca017bcde885f2be6e06e6.html">examples</a></li><li class="navelem"><a class="el" href="dir_e5978c9e61d6dff17bad4dd7ccd6cbd9.html">glsl_shader_pass</a></li><li class="navelem"><a class="el" href="render__to__video_8h.html">render_to_video.h</a></li>
    <li class="footer">Generated on Thu Dec 6 2012 09:15:44 for FLITr by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.1.2 </li>
  </ul>
</div>
</body>
</html>
